
function beforeFn (url, params, options) {
    let urlStrParams = this.$utils.objToUrlStr(params)
    // switchTab 转跳不需要参数
    urlStrParams && (url = `${url}?${urlStrParams}`)

    // 是否登录
    if (options.login) {
        url = ''
    }

    return { url, ...options }
}

/** 还未完成
 * 保留当前页面，跳转到应用内的某个页面
 * @param {String} url 转跳地址
 * @param {Object} params 转跳携带的参数
 * @param {Object} options 参数信息 参考uni
 * @param {Object} options.login 是否检测登录
 */
export function toPage (url, params, options) {
    let config = beforeFn(url, params, options)

    uni.navigateTo({
        config,
    })
}

/** 还未完成
 * 关闭当前页面，跳转到应用内的某个页面
 * @param {String} url 转跳地址
 * @param {Object} params 转跳携带的参数
 * @param {Object} options 参数信息 参考uni
 * @param {Object} options.login 是否检测登录
 */
export function toPageClose (url, params, options) {
    let config = beforeFn(url, params, options)

    uni.navigateTo({
        config,
    })
}

/** 还未完成
 * 关闭所有页面，打开到应用内的某个页面
 * @param {String} url 转跳地址
 * @param {Object} params 转跳携带的参数
 * @param {Object} options 参数信息 参考uni
 * @param {Object} options.login 是否检测登录
 */
export function reLaunch (url, params, options) {
    let config = beforeFn(url, params, options)

    uni.reLaunch({
        config,
    })
}

/** 还未完成
 * 跳转到 tabBar 页面，并关闭其他所有非 tabBar 页面
 * @param {String} url 转跳地址
 * @param {Object} options 参数信息 参考uni
 * @param {Object} options.login 是否检测登录
 */
export function switchTab (url, options) {
    let config = beforeFn(url, {}, options)

    uni.switchTab({
        config,
    })
}

/**
 * 返回上一页
 * @param {Number} delta 返回的页数 默认1
 */
export function returnBack (delta=1) {
    uni.navigateBack({
        delta
    })
}
